package com.mryx.demo.mapper;


import com.mryx.demo.pojo.*;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface CommodityMapper {
    /**
     * 获得商品一级分类
     * @return 返回一级分类信息
     */
    List<Classification>  showOLmenu();

    /**
     * 获得商品二级分类
     * @return 返回二级分类信息
     */
    List<Classificationes> showTLmenu();

    /**
     * 获得商品二级分类详情
     * @return 返回二级分类信息
     */
    @Select("select cid,clid,name from classificationes where cid=#{cid}")
    Classificationes getTwoTypeByid(@Param("cid") Integer cid);

    /**
     * 获得商品
     * @return 返回商品信息
     */
    List<Commodity> showAllByClass(@Param("clid") Integer clid);

    /**
     * 根据输入的名称查询商品
     * @param  name 商品名称
     * @return 返回商品信息
     */
    List<Commodity> search(@Param("name") String name);

    /**
     * 根据id查询商品详情
     * @param  cid 商品id
     * @return 返回商品对象
     */
    Commodity showAllById(@Param("cid") Integer cid);

    /**
     * 将数据存入redis中
     * @param cart  购物车对象
     * @return 返回执行结果
     */
    Integer insert(@Param("cart") Cart cart);

    /**
     * 根据编号删除数据
     * @param  cartid 购物车id
     * @return 返回结果
     */
    Integer del(Integer cartid);

    /**
     * 修改购物车数据
     * @param cart 对象
     * @return 返回执行结果
     */
    Integer update(@Param("cart") Cart cart);

    /**
     * 查询购物车列表
     * @return 返回购物车信息
     */
    List<Cart> showAll();

    /**
     * 添加商品
     * @param commodity commodity对象
     * @return 返回执行结果
     */
    Integer insertCommodity(@Param("commodity") Commodity commodity);

    /**
     * 删除商品
     * @param cid 商品id
     * @return 返回执行结果
     */
    Integer delCommodity(Integer cid);

    /**
     * 修改商品
     * @param commodity commodity对象
     * @return 返回执行结果
     */
    Integer updateCommodity(@Param("commodity") Commodity commodity);

    /**
     * 查询商品
     * @return 返回执行结果
     */
    List<Commodity> showAllCommodity();

    /**
     * 获取全部商品数量
     * @return
     */
    @Select("SELECT count(1) FROM commodity")
    Integer getCount();

    /**
     *  增加商品一级分类
     * @return
     */
    @Insert("insert into classification values(null,#{name})")
    Integer addOneType(@Param("name") String name);

    /**
     *  修改商品一级分类
     * @return
     */
    @Update("update classification set name=#{classification.name} where cid=#{classification.cid}")
    Integer updOneType(@Param("classification") Classification classification);

    /**
     *  修改商品二级分类
     * @return
     */
    @Insert("update classificationes set name=#{classificationes.name},clid=#{classificationes.clid} where cid=#{classificationes.cid}")
    Integer updTwoType(@Param("classificationes") Classificationes classificationes);

    /**
     *  增加商品单位分类
     * @return
     */
    @Insert("insert into company values(null,#{name})")
    Integer addCompany(@Param("name") String name);

    /**
     *  修改商品单位分类
     * @return
     */
    @Update("update company set name=#{company.name} where cid = #{company.cid}")
    Integer updCompany(@Param("company") Company company);

    /**
     *  获取商品单位分类
     * @return
     */
    @Select("select cid,name from company")
    List<Company> getCompany();

    /**
     *  获取商品单位分类详情
     * @return
     */
    @Select("select cid,name from company where cid=#{cid}")
    Company getCompanyById(@Param("cid") Integer cid);

    /**
     *  增加商品二级分类
     * @return
     */
    @Insert("insert into classificationes values(null,#{classificationes.clid},#{classificationes.name})")
    Integer addTwoType(@Param("classificationes") Classificationes classificationes);

    /**
     *  获取商品一级分类详情
     * @return
     */
    @Select("select cid,name from classification where cid=#{cid}")
    Classification getOneTypeByid(@Param("cid") Integer cid);

    /**
     * 增加图片信息
     * @param picture picture对象
     * @return 返回执行结果
     */
    Integer insertPicture(@Param("picture") Picture picture);

    /**
     * 删除图片信息
     * @param  cid 商品id
     * @return 返回执行结果
     */
    Integer delPicture(Integer cid);

    /**
     * 修改图片信息
     * @param picture picture对象
     * @return 返回执行结果
     */
    Integer updatePicture(@Param("picture") Picture picture);

    /**
     * 根据商品id查询图片
     * @param cid 商品id
     * @return 返回图片信息
     */
    List<Picture> showPictureById(@Param("cid") Integer cid);

    /**
     * 查询单位信息
     * @return 返回单位数据
     */
    List<Company> showCompany();
}
